package com.nowcoder.community.dao;

import com.nowcoder.community.entity.DiscussPost;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface DiscussPostMapper {

    /**
     * @description: 查询数据集合
     * @author: Master_XXJS
     * @date: 2022/9/16 23:08
     * @param: [userId, offset, limit]
     * @return: java.util.List<com.nowcoder.community.entity.DiscussPost>
     **/
    // xml 进行sql 的书写的时候，返回值只需要指定 DiscussPost 泛型即可
    // 因为 list 集合，java 可以自动的检测得到
    // 这里的 userId 可以是 null，就代表查 所有的数据list
    // 如果，userId 不是null，则查询 userId 的对应的相关信息而已
    //orderMode 是排序的方式，一种是热门排序 1，一种是最新排序（默认）0
    List<DiscussPost> selectDiscussPosts(int userId, int offset, int limit ,int orderMode);

    /**
     * @description: 查询当前的用户信息有多少行，也就是多少条数据（如果id 为 null，就查询全部的数据总量）
     * @author: Master_XXJS
     * @date: 2022/9/16 23:08
     * @param: [userId]
     * @return: int
     **/
    // @param,给参数添加别名
    // 如果只有一个参数，当 <if> 标签使用它进行动态拼接时，这个 @param 注解必须加，不然报错
    int selectDiscussRows(@Param("userId") int userId);

    /**
     * 增加帖子的数量，也就是发布帖子
     * @param discussPost 帖子的实体类
     * @return
     */
    int insertDiscussPost(DiscussPost discussPost);

    DiscussPost findDiscussPostById(int discussPostId);

    /**
     * 更新帖子的评论数量
     * @param id 帖子的id
     * @param commentCount 评论数量
     * @return
     */
    int updateCommentCount(int id,int commentCount);

    int updateType(int id,int type);

    int updateStatus(int id,int status);

    int updateScore(int id,double score);
}
